using System.Globalization;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;

namespace PlanoAulaHelper
{
    partial class RelatoriosDataContext
    {
    }
}
namespace PlanoAulaHelper.Reports
{

    public partial class RelatorioAvaliacaoDados
    {
        public bool EhProva
        {
            get { return DataMarcada != null && Data.Value != null && Data.Value.Date == DataMarcada.Value; }
            set { }
        }
        public string NomeDia
        {
            get { return CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[Dia.GetValueOrDefault(0)]; }
            set { }
        }
        [Column(IsDbGenerated=false, UpdateCheck= UpdateCheck.Never, CanBeNull=true)]
        public string Horario
        {
            get
            {
                return string.Format("{0}:{1} - {2}:{3}", this.HoraInicio, MinutoInicio, HoraFim, MinutoFim);
            }
            set {  }
        }
        public static DataTable ObterRelatorioAvaliacao(int IdPlanoAulaCab)
        {
            using ( dbContext db = new dbContext() )
            {
                var resultado = ( from pcab in db.PlanoAulaCabs
                                join pdet in db.PlanoAulaDetalhes on pcab.Id equals pdet.IdPlanoAulaCab into joinPlanoAula
                                join ava in db.Avaliacaos on pcab.Id equals ava.UnidadeAvaliacao.IdPlanoAulaCab into joinAvaliacoes
                                where pcab.Id == IdPlanoAulaCab
                                from jPlanoAula in joinPlanoAula.DefaultIfEmpty()
                                from jAvaliacao in joinAvaliacoes.DefaultIfEmpty()
                                select new
                                {
                                    Unidade = jAvaliacao.UnidadeAvaliacao.Nome,
                                    jPlanoAula.IdPlanoAulaCab,
                                    IdPlanoAulaDetahle = jPlanoAula.Id,
                                    IdUnidadeAvaliacao = jAvaliacao.Id,
                                    NomeAvaliacao = jAvaliacao.Nome,
                                    jAvaliacao.DataMarcada,
                                    jAvaliacao.DataRealizacao,
                                    jAvaliacao.Assuntos,
                                    jAvaliacao.Observacao,
                                    jAvaliacao.Situacao,
                                    jAvaliacao.NotaMax,
                                    jPlanoAula.Conteudo,
                                    jPlanoAula.Referencia,
                                    jPlanoAula.Data,
                                    Dia = (int)jPlanoAula.Data.DayOfWeek,
                                    jPlanoAula.HoraInicio,
                                    jPlanoAula.HoraFinal,
                                    jPlanoAula.MinutoInicio,
                                    jPlanoAula.MinutoFinal
                                });
               
                return resultado.ToADOTable(n => new object[] { resultado });
            }
        }
    }

}
